Software applications have typically been developed by expert software developers, and have often been developed as monolithic or modular applications that are designed for use by a large target audience(s) of users. However, in many circumstances, it is difficult to create software applications successfully using related development models. For example, even if the resulting software applications are customizable to some extent, it is difficult to create a software application that is sufficiently targeted for a particular user base. Similarly, even if the software applications can be upgraded using existing upgrade techniques, it is difficult to keep up with the changing needs of even a single set of users. Further, it is often difficult for average, non-technical users to execute desired customizations and upgrades, even when these are available.
It is also possible to utilize a different software development model, in which a plurality of pre-existing software elements can be combined to create a software application having desired features. For example, a software provider may provide the pre-existing software elements and associated development environment. Then, a group of users that is knowledgeable with respect to both the development environment and a targeted user base may utilize the development environment and software elements to design a desired application for the targeted user base.
In these and similar software development models, it is possible to design and deploy desired software applications in a rapid manner. However, the speed and variability with which resulting software applications are developed and deployed can lead, over time, to other demands on the software developers, and to inconsistent or undesirable user experiences for the targeted user base.